package com.restcloud.pojo.PersonalInformation;

import com.restcloud.pojo.Public.Code;
import com.restcloud.pojo.Public.Id;
import com.restcloud.pojo.Public.Name;
import lombok.Data;

import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.List;

@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class Device implements Serializable {

    public Device() {
    }

    public Device(String classCode) {
        this.classCode = classCode;
    }

    public Device(String classCode, String determinerCode) {
        this.classCode = classCode;
        this.determinerCode = determinerCode;
    }

    @XmlAttribute(name = "classCode")
    private String classCode;

    @XmlAttribute(name = "determinerCode")
    private String determinerCode;

    @XmlAttribute(name = "moodCode")
    private String moodCode;

    @XmlElementWrapper(name = "id")
    @XmlElement(name = "item")
    private List<Id> id;

    @XmlElement(name = "assignedPerson")
    private Device assignedPerson;

    @XmlElement(name = "code")
    private Code code;

    @XmlElement(name = "statusCode")
    private Code statusCode;

    @XmlElement(name = "value")
    private Name value;

    @XmlElement(name = "subject")
    private Receiver subject;

    @XmlElement(name = "subject1")
    private Receiver subject1;

    @XmlElement(name = "custodian")
    private Receiver custodian;

    @XmlElement(name = "queryAck")
    private Id queryAck;

    @XmlElement(name = "effectiveTime")
    private Code effectiveTime;

    @XmlElement(name = "name")
    private Name name;

    @XmlElement(name = "telecom")
    private Name telecom;

    @XmlElement(name = "patientPerson")
    private PatientPerson patientPerson;

    @XmlElement(name = "providerOrganization")
    private Device providerOrganization;

    @XmlElement(name = "subjectOf1")
    private Receiver subjectOf1;

    @XmlElement(name = "coveredPartyOf")
    private Receiver coveredPartyOf;

    @XmlElement(name = "occupationCode")
    private Code occupationCode;

    @XmlElement(name = "employerOrganization")
    private Device employerOrganization;

    @XmlElement(name = "contactParty")
    private Device contactParty;

    @XmlElement(name = "scopingOrganization")
    private Device scopingOrganization;

    @XmlElement(name = "relationshipHolder1")
    private Device relationshipHolder1;

    @XmlElement(name = "beneficiary")
    private Receiver beneficiary;

    public String getClassCode() {
        return classCode;
    }

    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }

    public String getDeterminerCode() {
        return determinerCode;
    }

    public void setDeterminerCode(String determinerCode) {
        this.determinerCode = determinerCode;
    }

    public String getMoodCode() {
        return moodCode;
    }

    public void setMoodCode(String moodCode) {
        this.moodCode = moodCode;
    }

    public List<Id> getId() {
        return id;
    }

    public void setId(List<Id> id) {
        this.id = id;
    }

    public Device getAssignedPerson() {
        return assignedPerson;
    }

    public void setAssignedPerson(Device assignedPerson) {
        this.assignedPerson = assignedPerson;
    }

    public Code getCode() {
        return code;
    }

    public void setCode(Code code) {
        this.code = code;
    }

    public Code getStatusCode() {
        return statusCode;
    }

    public void setStatusCode(Code statusCode) {
        this.statusCode = statusCode;
    }

    public Name getValue() {
        return value;
    }

    public void setValue(Name value) {
        this.value = value;
    }

    public Receiver getSubject() {
        return subject;
    }

    public void setSubject(Receiver subject) {
        this.subject = subject;
    }

    public Receiver getSubject1() {
        return subject1;
    }

    public void setSubject1(Receiver subject1) {
        this.subject1 = subject1;
    }

    public Receiver getCustodian() {
        return custodian;
    }

    public void setCustodian(Receiver custodian) {
        this.custodian = custodian;
    }

    public Id getQueryAck() {
        return queryAck;
    }

    public void setQueryAck(Id queryAck) {
        this.queryAck = queryAck;
    }

    public Code getEffectiveTime() {
        return effectiveTime;
    }

    public void setEffectiveTime(Code effectiveTime) {
        this.effectiveTime = effectiveTime;
    }

    public Name getName() {
        return name;
    }

    public void setName(Name name) {
        this.name = name;
    }

    public Name getTelecom() {
        return telecom;
    }

    public void setTelecom(Name telecom) {
        this.telecom = telecom;
    }

    public PatientPerson getPatientPerson() {
        return patientPerson;
    }

    public void setPatientPerson(PatientPerson patientPerson) {
        this.patientPerson = patientPerson;
    }

    public Device getProviderOrganization() {
        return providerOrganization;
    }

    public void setProviderOrganization(Device providerOrganization) {
        this.providerOrganization = providerOrganization;
    }

    public Receiver getSubjectOf1() {
        return subjectOf1;
    }

    public void setSubjectOf1(Receiver subjectOf1) {
        this.subjectOf1 = subjectOf1;
    }

    public Receiver getCoveredPartyOf() {
        return coveredPartyOf;
    }

    public void setCoveredPartyOf(Receiver coveredPartyOf) {
        this.coveredPartyOf = coveredPartyOf;
    }

    public Code getOccupationCode() {
        return occupationCode;
    }

    public void setOccupationCode(Code occupationCode) {
        this.occupationCode = occupationCode;
    }

    public Device getEmployerOrganization() {
        return employerOrganization;
    }

    public void setEmployerOrganization(Device employerOrganization) {
        this.employerOrganization = employerOrganization;
    }

    public Device getContactParty() {
        return contactParty;
    }

    public void setContactParty(Device contactParty) {
        this.contactParty = contactParty;
    }

    public Device getScopingOrganization() {
        return scopingOrganization;
    }

    public void setScopingOrganization(Device scopingOrganization) {
        this.scopingOrganization = scopingOrganization;
    }

    public Device getRelationshipHolder1() {
        return relationshipHolder1;
    }

    public void setRelationshipHolder1(Device relationshipHolder1) {
        this.relationshipHolder1 = relationshipHolder1;
    }

    public Receiver getBeneficiary() {
        return beneficiary;
    }

    public void setBeneficiary(Receiver beneficiary) {
        this.beneficiary = beneficiary;
    }
}
